
let first = new Promise( (resolve,reject) => {
    // 随机生成 [ 0 , 1000 ) 之间的整数
    let rand = ( Math.random() * 1000 ) | 0 ;
    // 在延迟 2000 毫秒 之后调用 resolve 函数 完成"兑现"操作[并为 resolve 传递参数(rand)]
    setTimeout( resolve , 2000 , rand );
});

let second = new Promise( (resolve,reject) => {
    // 在延迟 3000 毫秒 之后调用 reject 函数 完成"拒绝"操作[并为 reject 传递参数(reason)]
    setTimeout( reject , 3000 , '你是个好人' );
});

let arr = [ first , second ];

let promise = Promise.allSettled( arr );
console.log( promise );

// 当 arr 中每个 promise 都被处理成最终状态 (可能是fulfilled，有可能是rejected)
// 就调用 then 的第一个参数所表示的函数
promise.then( results => {
    results.forEach( res => {
        console.log( res );
    });
    throw new Error('hahaha');
}).catch( reason => {
    console.log( promise );
    console.log( reason );
});